package com.example.pro3_reactor;

import reactor.core.publisher.Flux;

/**
 * @program: reactivePro
 * @description: 同步创建
 * @author: zy
 * @create: 2025-04-26 20:25
 */
public class App3_generate {
    public static void main(String[] args) {
        // 同步创建: 通过generate方法来创建Flux序列，generate方法接收两个参数，第一个参数是一个状态初始值，第二个参数是一个BiFunction函数式接口，
        // 该函数式接口有两个参数，第一个参数是状态，第二个参数是Sink对象，通过Sink对象可以向Flux序列中添加元素，
        // 当Sink对象调用complete方法时，表示Flux序列创建完成。
        // 示例：创建一个Flux序列，该序列中包含1到10的偶数，代码如下：
        Flux.generate(   () -> 0,
                (state, sink) -> {
                    sink.next("3 x " + state + " = " + 3 * state);  // 向Flux序列中添加元素
                    if (state == 10) sink.complete();
                    return state + 1;
                }).subscribe(System.out::println);
    }
}
// 3*0=0    return 1
// 3*1=3    return 2
// 3*2=6    return 3
// 3*3=9    return 4
// 3*4=12   return 5
// 3*5=15   return 6
// 3*6=18   return 7
// 3*7=21   return 8
// 3*8=24   return 9
// 3*9=27   return 10
// 3*10=30  return 11
